using System;
using System.Collections.Generic;
using Newtonsoft.Json;

public class WeChatMessageResponse
{
    [JsonProperty("ret")]
    public long Ret { get; set; }

    [JsonProperty("errmsg")]
    public string ErrorMessage { get; set; }

    [JsonProperty("msg_count")]
    public long MessageCount { get; set; }

    [JsonProperty("can_msg_continue")]
    public long CanMessageContinue { get; set; }

    [JsonProperty("general_msg_list")]
    public string GeneralMessageListJson { get; set; }

    [JsonProperty("next_offset")]
    public long NextOffset { get; set; }

    [JsonProperty("video_count")]
    public long VideoCount { get; set; }

    [JsonProperty("use_video_tab")]
    public long UseVideoTab { get; set; }

    [JsonProperty("real_type")]
    public long RealType { get; set; }

    [JsonProperty("home_page_list")]
    public List<object> HomePageList { get; set; }
}

public class GeneralMessageList
{
    [JsonProperty("list")]
    public List<MessageItem> List { get; set; }
}

public class MessageItem
{
    [JsonProperty("comm_msg_info")]
    public CommMsgInfo CommMsgInfo { get; set; }

    [JsonProperty("app_msg_ext_info")]
    public AppMsgExtInfo AppMsgExtInfo { get; set; }
}

public class CommMsgInfo
{
    [JsonProperty("id")]
    public long Id { get; set; }

    [JsonProperty("type")]
    public long Type { get; set; }

    [JsonProperty("datetime")]
    public long Datetime { get; set; }

    [JsonProperty("fakeid")]
    public string FakeId { get; set; }

    [JsonProperty("status")]
    public long Status { get; set; }

    [JsonProperty("content")]
    public string Content { get; set; }
}

public class AppMsgExtInfo
{
    [JsonProperty("title")]
    public string Title { get; set; }

    [JsonProperty("digest")]
    public string Digest { get; set; }

    [JsonProperty("content")]
    public string Content { get; set; }

    [JsonProperty("fileid")]
    public long FileId { get; set; }

    [JsonProperty("content_url")]
    public string ContentUrl { get; set; }

    [JsonProperty("source_url")]
    public string SourceUrl { get; set; }

    [JsonProperty("cover")]
    public string Cover { get; set; }

    [JsonProperty("subtype")]
    public long Subtype { get; set; }

    [JsonProperty("is_multi")]
    public long IsMulti { get; set; }

    [JsonProperty("multi_app_msg_item_list")]
    public List<AppMsgExtInfoMulti> MultiAppMsgItemList { get; set; }

    [JsonProperty("author")]
    public string Author { get; set; }

    [JsonProperty("copyright_stat")]
    public long CopyrightStat { get; set; }

    [JsonProperty("duration")]
    public long Duration { get; set; }

    [JsonProperty("del_flag")]
    public long DelFlag { get; set; }

    [JsonProperty("item_show_type")]
    public long ItemShowType { get; set; }

    [JsonProperty("audio_fileid")]
    public long AudioFileId { get; set; }

    [JsonProperty("play_url")]
    public string PlayUrl { get; set; }

    [JsonProperty("malicious_title_reason_id")]
    public long MaliciousTitleReasonId { get; set; }

    [JsonProperty("malicious_content_type")]
    public long MaliciousContentType { get; set; }
}

public class AppMsgExtInfoMulti
{
    [JsonProperty("title")]
    public string Title { get; set; }

    [JsonProperty("digest")]
    public string Digest { get; set; }

    [JsonProperty("content")]
    public string Content { get; set; }

    [JsonProperty("fileid")]
    public long FileId { get; set; }

    [JsonProperty("content_url")]
    public string ContentUrl { get; set; }

    [JsonProperty("source_url")]
    public string SourceUrl { get; set; }

    [JsonProperty("cover")]
    public string Cover { get; set; }

    [JsonProperty("subtype")]
    public long Subtype { get; set; }

    [JsonProperty("author")]
    public string Author { get; set; }

    [JsonProperty("copyright_stat")]
    public long CopyrightStat { get; set; }

    [JsonProperty("duration")]
    public long Duration { get; set; }

    [JsonProperty("del_flag")]
    public long DelFlag { get; set; }

    [JsonProperty("item_show_type")]
    public long ItemShowType { get; set; }

    [JsonProperty("audio_fileid")]
    public long AudioFileId { get; set; }

    [JsonProperty("play_url")]
    public string PlayUrl { get; set; }

    [JsonProperty("malicious_title_reason_id")]
    public long MaliciousTitleReasonId { get; set; }

    [JsonProperty("malicious_content_type")]
    public long MaliciousContentType { get; set; }
}

public class OffsetConfig
{
    public long CurrnetOffset { get; set; }
    public string Biz { get; set; }
}
